package com.css.openapi.feign.dto;


import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;

/**
 * @description:
 * @Title: BaseRequestHeaderDTO
 * @Author xlw
 * @Package com.invoice.tcc.feign.yljy.dto
 * @Date 2025/9/11 15:06
 */
@Data
public class BaseRequestHeaderDTO {

    /**
     * 报文类型（长度20，必填）
     */
    @NotBlank(message = "appId不能为空")
    private String appId;

    /**
     * 请求时间（格式YYYYMMDDhhmmss，长度14，必填）
     * 注：文档标注长度为6，实际应为14（YYYYMMDDhhmmss），此处按业务常识修正
     */
    @NotBlank(message = "timestamp不能为空")
    @Pattern(regexp = "^\\d{14}$", message = "timestamp格式应为YYYYMMDDhhmmss")
    private String timestamp;

    /**
     * 随机值（长度32，必填）
     */
    @NotBlank(message = "nonce不能为空")
    @Pattern(regexp = "^.{32}$", message = "nonce长度必须为32位")
    private String nonce;

    /**
     * 签名数据（长度64，必填，按文档签名规则生成）
     */
    @NotBlank(message = "signature不能为空")
    @Pattern(regexp = "^.{64}$", message = "signature长度必须为64位")
    private String signature;

    /**
     * 报文版本号（固定传0.2，必填）
     */
    @NotBlank(message = "msgVer不能为空")
    private String msgVer = "0.2";
}
